<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/7/24
 * Time: 17:05
 */

namespace app\api\v1\controller;

use think\Controller;
use think\Request;
use Jaeger\GHttp;
use QL\QueryList;

class Qlist extends Controller
{
    public function test(Request $request)
    {
        //需要采集的页面
        $url = "https://mp.weixin.qq.com/s/zQgkODosZ4rh5dn0ErOnfQ";
        //采集规则
        $rule = [
            'title' => ['.rich_media_title', 'text'],
            'date' => ['#publish_time', 'text'],
            'author' => ['#js_author_name', 'text'],
            'video' => ['video', 'src'],
            'content' => ['.rich_media_content', 'html']
        ];

        $html = GHttp::get($url);
        // 直接匹配出body中的内容
        $pu = preg_match('/<body[^>]+>(.+)\s+<\/body>/s',$html,$arr);
        $html = $arr[0];

        $ql = QueryList::html($html)->rules($rule)->query()->getData();
        dump($ql);

    }

    public function lz()
    {
        //需要采集的目标页面
        $page = 'http://cms.querylist.cc/news/566.html';
        //采集规则
        $reg = [
            //采集文章标题
            'title' => ['h1','text'],
            //采集文章发布日期,这里用到了QueryList的过滤功能，过滤掉span标签和a标签
            'date' => ['.pt_info','text','-span -a',function($content){
                //用回调函数进一步过滤出日期
                $arr = explode(' ',$content);
                return $arr[0];
            }],
            //采集文章正文内容,利用过滤功能去掉文章中的超链接，但保留超链接的文字，并去掉版权、JS代码等无用信息
            'content' => ['.post_content','html','a -.content_copyright -script']
        ];
        $rang = '.content';
        $ql = QueryList::get($page)->rules($reg)->range($rang)->query();

        $data = $ql->getData(function($item){
            //利用回调函数下载文章中的图片并替换图片路径为本地路径
            //使用本例请确保当前目录下有image文件夹，并有写入权限
            $content = QueryList::html($item['content']);
            $content->find('img')->map(function($img){
                $src = 'http://cms.querylist.cc'.$img->src;
                $localSrc = 'image/'.md5($src).'.jpg';
                $stream = file_get_contents($src);
                file_put_contents($localSrc,$stream);
                $img->attr('src',$localSrc);
            });
            $item['content'] = $content->find('')->html();
            return $item;
        });

        //打印结果
        print_r($data->all());
    }
}